/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package GUIalmacen;

import GUIalmacen.Juego;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import BL.BLAlmacen;
import BL.BLGrafoAlmacen;
import BE.BENodo;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author manuel
 */
public class VentanaPrincipal extends JFrame implements ActionListener{
    BufferedImage mapa1;
    private Juego objJuego;
    private JPanelMapa panelMapa;
    BufferedImage nuevo;
   

    BufferedImage pared;
    BufferedImage camino;
    BufferedImage ruta;
    BufferedImage pallet;
    //JPanelSaco panelSaco;

    BLGrafoAlmacen blGrafoAlmacen;


    private int ancho;
    private int largo;

    private int vx;
    private int vy;
    private List<BENodo> lstruta =new ArrayList<BENodo>() ;
    private List<BENodo> lstPosicioDespacho =new ArrayList<BENodo>() ;

    public void cargarMallaAlmacen () throws IOException{
        BLAlmacen blAlmacen = new BLAlmacen();
        ancho=blAlmacen.getAncho();
        largo=blAlmacen.getLargo();
        blGrafoAlmacen = new BLGrafoAlmacen (ancho,largo);
        blGrafoAlmacen.cargarRacks();
 vx=(blAlmacen.getAncho()+2)*32;
        vy=(blAlmacen.getLargo()+2)*32;
         this.setSize(vx,vy);

         objJuego = new Juego(largo,ancho);

        //objJuego.getObjMundo().llenarLaberinto(objJuego.getObjMundo());
        

        List<Integer> nodosAnulados = blGrafoAlmacen.getBeGrafoAlmacen().getAnulados();
        int size = blGrafoAlmacen.getBeGrafoAlmacen().size();
        List<BENodo> grafo = blGrafoAlmacen.getBeGrafoAlmacen().getGrafo();

        int id,x,y;
        for (int i = 0; i < grafo.size(); i++) {
            BENodo objNodo = grafo.get(i);
            id=objNodo.getIdNodo();
            x=objNodo.getX();
            y=objNodo.getY();
            if(nodosAnulados.contains(id))

            objJuego.getObjMundo().getMialmacen().getArregloCeldas()[y-1][x-1].setCelda('X');
            else objJuego.getObjMundo().getMialmacen().getArregloCeldas()[y-1][x-1].setCelda(' ');
        }

        if(lstPosicioDespacho!=null && lstruta!=null){
            for (int i = 0; i < lstPosicioDespacho.size(); i++) {
            BENodo objNodo = grafo.get(i);
            id=objNodo.getIdNodo();
            x=objNodo.getX();
            y=objNodo.getY();
            if(lstPosicioDespacho.contains(id))

            objJuego.getObjMundo().getMialmacen().getArregloCeldas()[y-1][x-1].setCelda('P');


            for (i = 0; i < lstruta.size(); i++) {
            objNodo = grafo.get(i);
            id=objNodo.getIdNodo();
            x=objNodo.getX();
            y=objNodo.getY();
            if(lstruta.contains(id))

            objJuego.getObjMundo().getMialmacen().getArregloCeldas()[y-1][x-1].setCelda('D');
        }


        }

    }
        objJuego.getObjMundo().getMialmacen().muestraMapa();

    }

    public VentanaPrincipal(List<BENodo> lstruta,List<BENodo> lstPosicioDespacho) throws IOException{
        super("Mi Almacen");

       
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

        cargarMallaAlmacen();

        try {
            BufferedImage tile = ImageIO.read(new File("tile.png"));
           pared=tile.getSubimage(0,0,32,32);
           camino=ImageIO.read(new File("camino.png"));
            ruta=ImageIO.read(new File("ruta.png"));
            pallet=ImageIO.read(new File("pallet.png"));

           // mapa1=ImageIO.read(new File("mapa1.jpg"));
              nuevo = new BufferedImage((ancho)*32,(largo)*32,BufferedImage.TYPE_INT_RGB);
            //nuevo = new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB);

        } catch (IOException ex) {
            ex.printStackTrace();
        }
        setLayout(null);
        panelMapa = new JPanelMapa(this);
       panelMapa.setSize((ancho)*32,(largo)*32);
        panelMapa.setLocation(32,32);
        panelMapa.setVisible(true);
this.add(panelMapa);


//     panelSaco = new JPanelSaco(this);
//        panelSaco.setSize(256,96);
//        panelSaco.setLocation(352,608);
//          this.add(panelSaco);


       

       
        this.pack();
    }

    public int getAncho() {
        return ancho;
    }

    public void setAncho(int ancho) {
        this.ancho = ancho;
    }

    public int getLargo() {
        return largo;
    }

    public void setLargo(int largo) {
        this.largo = largo;
    }

    public BufferedImage getPallet() {
        return pallet;
    }

    public void setPallet(BufferedImage pallet) {
        this.pallet = pallet;
    }

    public BufferedImage getRuta() {
        return ruta;
    }

    public void setRuta(BufferedImage ruta) {
        this.ruta = ruta;
    }



    public Juego getObjJuego() {
        return objJuego;
    }

    public BLGrafoAlmacen getBlGrafoAlmacen() {
        return blGrafoAlmacen;
    }

    public void setBlGrafoAlmacen(BLGrafoAlmacen blGrafoAlmacen) {
        this.blGrafoAlmacen = blGrafoAlmacen;
    }

    public BufferedImage getCamino() {
        return camino;
    }

    public void setCamino(BufferedImage camino) {
        this.camino = camino;
    }

    public BufferedImage getMapa1() {
        return mapa1;
    }

    public void setMapa1(BufferedImage mapa1) {
        this.mapa1 = mapa1;
    }

    public BufferedImage getNuevo() {
        return nuevo;
    }

    public void setNuevo(BufferedImage nuevo) {
        this.nuevo = nuevo;
    }

    public BufferedImage getPared() {
        return pared;
    }

    public void setPared(BufferedImage pared) {
        this.pared = pared;
    }


    public static void main(String[] args) throws IOException {
        // TODO code application logic here
        VentanaPrincipal f = new VentanaPrincipal(null,null);
        f.setDefaultCloseOperation(EXIT_ON_CLOSE);
       BLAlmacen blAlmacen = new BLAlmacen();
//        int y1=(blAlmacen.getAncho()+2)*32;
//        int x1=(blAlmacen.getLargo()-1)*32;
//         f.setSize(x1,y1);
        f.setSize(f.getVx(),f.getVy());
        f.setVisible(true);
        f.setResizable(false);
    }

 
    public JPanelMapa getPanelMapa() {
        return panelMapa;
    }

    public void setPanelMapa(JPanelMapa panelMapa) {
        this.panelMapa = panelMapa;
    }

    public void actionPerformed(ActionEvent ae) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public int getVx() {
        return vx;
    }

    public void setVx(int vx) {
        this.vx = vx;
    }

    public int getVy() {
        return vy;
    }

    public void setVy(int vy) {
        this.vy = vy;
    }


}
